VERSION 1.0 CLASS
BEGIN
  MultiUse = -1  'True
  Persistable = 0  'NotPersistable
  DataBindingBehavior = 0  'vbNone
  DataSourceBehavior  = 0  'vbNone
  MTSTransactionMode  = 0  'NotAnMTSObject
END
Attribute VB_Name = "LocalAssertions"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = True
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = True

'
'Copyright (c) 2010 Andrew Wall
'
' http://www.opensource.org/licenses/mit-license.php
'
'Permission is hereby granted, free of charge, to any person obtaining a copy
'of this software and associated documentation files (the "Software"), to deal
'in the Software without restriction, including without limitation the rights
'to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
'copies of the Software, and to permit persons to whom the Software is
'furnished to do so, subject to the following conditions:
'
'The above copyright notice and this permission notice shall be included in
'all copies or substantial portions of the Software.
'
'THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
'IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
'FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
'AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
'LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
'OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
'THE SOFTWARE.
'

Option Explicit

Implements init

Private mEquals As New Equality
Private mResult As Object

Private Sub init_init(obj As Object)
Set mResult = obj
End Sub

Public Sub fail(Optional message As String = "")
mResult.primitiveAssert False, Empty, Empty, message, "Fail"
End Sub

Public Sub isTrue(value As Boolean, Optional message As String = "")
If value Then
    mResult.primitiveAssert True, value, True, message, "Actual was true"
Else
    mResult.primitiveAssert False, value, True, message, "Actual should have been true"
End If
End Sub
Public Sub isFalse(value As Boolean, Optional message As String = "")
If Not value Then
    mResult.primitiveAssert True, value, False, message, "Actual was false"
Else
    mResult.primitiveAssert False, value, False, message, "Actual should have been false"
End If
End Sub
Public Sub isNothing(value As Variant, Optional message As String = "")
If value Is Nothing Then
    mResult.primitiveAssert True, value, Nothing, message, "Actual was Nothing"
Else
    mResult.primitiveAssert False, value, Nothing, message, "Actual should have been Nothing"
End If
End Sub
Public Sub isNotNothing(value As Variant, Optional message As String = "")
If Not value Is Nothing Then
    mResult.primitiveAssert True, value, value, message, "Actual was not Nothing"
Else
    mResult.primitiveAssert False, value, value, message, "Actual should have been not Nothing"
End If
End Sub
Public Sub equals(actual As Variant, expected As Variant, Optional message As String = "")
mEquals.equals actual, expected
mResult.primitiveAssert mEquals.result, actual, expected, message, mEquals.message
End Sub

